﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;


namespace BlindTestLibrary
{
    public class BlindTestProcessor
    {
        //path du répértoire des chansons
        String pathDirectory = string.Empty;
        String choiseLocal = string.Empty;

        //liste des fichier du répertoire
        FileInfo[] arrayFiles;

        //fichier à jouer
        FileInfo SelectedFile {set; get; }

        //liste des 4 fichiers choisis aléatoirement qui contient le fichier à lire
        List<FileInfo> ListFile { set; get;  }

        //renvoi l'objet PartyResponse qui sera envoyer au client contient la liste des 4 
        //fichiers et le fichier choisi
        public PartyResponse selectFile(string directoryPath)
        {   
            parsing(directoryPath);
            this.ListFile = selectTitles();

            //choisir un fichier à jouer parmis les 4
            Random rnd = new Random();
            int index = rnd.Next(ListFile.Count);
            this.SelectedFile = ListFile[index];

            PartyResponse party = new PartyResponse();

            // Remplissage de la liste avec 
            foreach (FileInfo fi in ListFile)
            {
                party.SongTitleList.Add(fi);
            }
            party.SelectedSong = this.SelectedFile;

            Console.WriteLine("le processeur a rendu la partie !!");
            return party;
            

        }

        //récupérer les fichiers du répértoire
        private void parsing(string directoryPath)
        {

            DirectoryInfo dir = new DirectoryInfo(directoryPath);
            arrayFiles = dir.GetFiles();
        }

        //récupérer les 4 fichiers
        private List<FileInfo> selectTitles()
        {
            List<FileInfo> listFile = new List<FileInfo>();

            int nbFile = 4;

            Random rnd = new Random();

            //remplir la liste des fichiers avec 4 fichiers choisi aléatoirement 
            while (listFile.Count < nbFile)
            {
                int index = rnd.Next(arrayFiles.Length);
                FileInfo file = arrayFiles[index];
                if (!listFile.Contains(file))
                    listFile.Add(file);
            }

            return listFile;
        }

        public Boolean CheckSong(String clientChoice, String fileSelected)
        {
            if (clientChoice.Equals(fileSelected))
            {
                return true;
            }
            else
            {
                return false;
            }
        }


    }
}
